/**
 * @Project : algorithm-learning
 * @Author : Ruoyu Wang
 * @User : Momenta
 * @DateTime : 2024/3/19 19:44
 */

//小红正在训练人工智能，其中人工智能有一个很流行的功能是文字识别。
//现在小红拿到了一个矩形图案，她希望你识别一下这个图案中的字符表示的是字母"L"还是"T"。
//注:图案可能会旋转或者翻转。
//
//输入描述
//  第一行输入一个正整数q，表示共有q组询问。
//  接下来会输入q组图案，每组第一行输入两个正整数n,m，代表图案的矩阵行数和列数。
//  接下来的几行，每行输入一个长度为m的、仅包含'.'和'*'的字符串。
//  1≤ q ≤100
//  3≤ n,m ≤100
//  保证字母的宽度为1，且每一笔都是水平或垂真的。
//输出描述
//  输出q行，代表每次询问的答案。
//  如果是L，则输出一个字符'L';
//  如果是T，则输出一个字符'T'。
//示例 1
//输入
//2
//4 4
//....
//..*.
//..*.
//***.
//5 6
//..*...
//..*...
//..***.
//..*...
//......
//输出
//L
//T
//说明
//  第一组询问，可以看成是一个L进行了左右翻转而成。
//  第二组询问，可以看成是一个T逆时针旋转了90度形成的。

#include <iostream>

using namespace std;

int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};

int main() {
    int q;
    scanf("%d", &q);
    while (q--) {
        int m, n;
        scanf("%d%d", &m, &n);
        char s[m][n];
        for (int i = 0; i < m; ++i) {
            scanf("%s", s[i]);
        }
        int tmp = 0;
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j) {
                if (s[i][j] == '*') {
                    int cnt = 0;
                    for (int k = 0; k < 4; ++k) {
                        int x = i + dx[k];
                        int y = j + dy[k];
                        if (x >= 0 && x < m && y >= 0 && y < n && s[x][y] == '*') cnt++;
                    }
                    if (cnt == 3) tmp++;
                }
            }
        }
        if (tmp == 0) puts("L");
        else puts("T");
    }
    return 0;
}